package com.bush.mall.coupon.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.Assert;

import com.bush.mall.common.entity.Result;
import com.bush.mall.common.exception.SaaSException;
import com.bush.mall.coupon.mapper.HomeSubjectMapper;
import com.bush.mall.coupon.entity.HomeSubjectEntity;
import com.bush.mall.coupon.service.HomeSubjectService;

/**
 * 首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】
 * @author RUN
 * @date 2022-11-29
 */
@Service(HomeSubjectService.BEAN_ID)
@Slf4j
public class HomeSubjectServiceImpl extends ServiceImpl<HomeSubjectMapper, HomeSubjectEntity> implements HomeSubjectService {

    /**
     * 查询首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】列表
     * @author RUN
     * @date 2022-11-29
     */
    @Override
    public Result queryForPage(Integer current,Integer size) {
        try{
            Assert.notNull(current,"参数异常");
            Assert.notNull(size,"参数异常");
            Page<HomeSubjectEntity> page = new Page<>(current,size);
            QueryWrapper<HomeSubjectEntity> wrapper = new QueryWrapper<>();
            wrapper.orderByDesc("create_time");
            baseMapper.selectPage(page,wrapper);
            return Result.ok(page);
        }catch(Exception e){
            log.error("HomeSubjectService queryForPage ERROR => {}" , e.getMessage());
            return Result.error(e.getMessage());
        }
    }

    /**
     * 创建首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】表单对象
     * @author RUN
     * @date 2022-11-29
     */
    @Override
    public Result saveHomeSubject(HomeSubjectEntity homeSubject) {
        try{
            Assert.notNull(homeSubject,"参数异常");
            boolean flag = this.save(homeSubject);
            if (flag) return Result.ok("首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】添加成功");
            throw new SaaSException("首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】添加失败");
        }catch(Exception e){
            log.error("HomeSubjectService saveHomeSubject ERROR => {}" , e.getMessage());
            return Result.error(e.getMessage());
        }
    }


    /**
     * 修改首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】表单对象
     * @author RUN
     * @date 2022-11-29
     */
    @Override
    public Result updateHomeSubject(HomeSubjectEntity homeSubject) {
        try{
            Assert.notNull(homeSubject,"参数异常");
            boolean flag = this.updateById(homeSubject);
            if (flag) return Result.ok("首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】修改成功");
            throw new SaaSException("首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】修改失败");
        }catch(Exception e){
            log.error("HomeSubjectService updateHomeSubject ERROR => {}" , e.getMessage());
            return Result.error(e.getMessage());
        }
    }


    /**
     * 通过id删除首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】表单
     * @author RUN
     * @date 2022-11-29
     */
    @Override
    public Result deleteHomeSubject(Long id) {
        try{
            Assert.notNull(id,"参数异常");
            boolean flag = this.removeById(id);
            if (flag) return Result.ok("首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】删除成功");
            throw new SaaSException("首页专题表【jd首页下面很多专题，每个专题链接新的页面，展示专题商品信息】删除失败");
        }catch(Exception e){
            log.error("HomeSubjectService deleteHomeSubject ERROR => {}" , e.getMessage());
            return Result.error(e.getMessage());
        }
    }




}